//!
/**
 ***********************************************************************************************************
 * <RBHardwareBuffer Implementation>
 ***********************************************************************************************************
 * @file RBHardwareBuffer.cpp
 ***********************************************************************************************************/

/***********************************************************************************************************
 * Precompiled Header
 ***********************************************************************************************************/
#include "RBMainPCH.h"

/***********************************************************************************************************
 * Includes
 ***********************************************************************************************************/
#include "RBHardwareBuffer.h"
#include "RBHardwareBufferManager.h"
#include "RBStream.h"

/***********************************************************************************************************
 * Defines
 ***********************************************************************************************************/

/***********************************************************************************************************
 * Classes implementation
 ***********************************************************************************************************/

/**
 ***********************************************************************************************************
 * Constructor
 ***********************************************************************************************************/
RBHardwareBuffer::RBHardwareBuffer(uint32 uiUsage, uint32 uiMemPoolMask, RBHardwareBufferManager* pCreator, void* pNative)
: m_uiUsage  (uiUsage)
, m_uiMemPoolMask(uiMemPoolMask)
, m_pCreator(pCreator)
, m_pNative(pNative)
{
    m_pCreator->AddBuffer(this);
}

/**
 ***********************************************************************************************************
 * Destructor
 ***********************************************************************************************************/
RBHardwareBuffer::~RBHardwareBuffer()
{
    m_pCreator->ReleaseNative(this);
    m_pCreator->RemoveBuffer(this);
}

/***********************************************************************************************************
 * 
 ***********************************************************************************************************/
void* RBHardwareBuffer::GetNative() const
{
    return m_pNative;
}

/***********************************************************************************************************
 * 
 ***********************************************************************************************************/
bool RBHardwareBuffer::Register( RBStream& kStream )
{
    return kStream.Register(this);
}
/***********************************************************************************************************/
